﻿//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2020 Jiang Yin. All rights reserved.
// Homepage: https://gameframework.cn/
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------

using UnityEngine;

namespace UnityGameFramework.Editor.ResourceTools
{
    /// <summary>
    /// 生成资源事件处理函数。
    /// </summary>
    public interface IBuildEventHandler
    {
        /// <summary>
        /// 所有平台生成开始前的预处理事件。
        /// </summary>
        void OnPreprocessAllPlatforms(IResourceBuilderControllerInfo info);

        /// <summary>
        /// 某个平台生成开始前的预处理事件。
        /// </summary>
        void OnPreprocessPlatform(IResourceBuilderControllerInfo info);

        /// <summary>
        /// 某个平台生成 AssetBundle 完成事件。
        /// </summary>
        /// <param name="assetBundleManifest">AssetBundle 的描述文件。</param>
        void OnBuildAssetBundlesComplete(IResourceBuilderControllerInfo info, AssetBundleManifest assetBundleManifest);

        /// <summary>
        /// 某个平台可更新模式版本列表文件的输出事件。
        /// </summary>
        /// <param name="platform">生成平台。</param>
        /// <param name="versionListPath">可更新模式版本列表文件的路径。</param>
        /// <param name="versionListLength">可更新模式版本列表文件的长度。</param>
        /// <param name="versionListHashCode">可更新模式版本列表文件的校验值。</param>
        /// <param name="versionListZipLength">可更新模式版本列表文件压缩后的长度。</param>
        /// <param name="versionListZipHashCode">可更新模式版本列表文件压缩后的校验值。</param>
        void OnOutputUpdatableVersionListData(Platform platform, string versionListPath, int versionListLength, int versionListHashCode, int versionListZipLength, int versionListZipHashCode,
            string LatestGameVersion, int InternalGameVersion, int InternalResourceVersion, string UpdatePrefixUri, bool OssProdMode, string IOSAppUrl, string AndroidAppUrl, string report_path, ResourceBuilderController.ESdkChannel channel);

        /// <summary>
        /// 某个平台生成结束后的后处理事件。
        /// </summary>
        /// <param name="isSuccess">是否生成成功。</param>
        void OnPostprocessPlatform(IResourceBuilderControllerInfo info, bool isSuccess);

        /// <summary>
        /// 所有平台生成结束后的后处理事件。
        /// </summary>
        void OnPostprocessAllPlatforms(IResourceBuilderControllerInfo info);
    }
}
